# ==========================
# CHARGEMENT DES BIBLIOTHÈQUES NÉCESSAIRES
# ==========================
# Chargement des bibliothèques
library(dplyr)
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
library(plotly)
## Warning: le package 'plotly' a été compilé avec la version R 4.4.2
## Le chargement a nécessité le package : ggplot2
## Warning: le package 'ggplot2' a été compilé avec la version R 4.4.2
##
## Attachement du package : 'plotly'
## L'objet suivant est masqué depuis 'package:ggplot2':
##
## last_plot
## L'objet suivant est masqué depuis 'package:stats':
##
## filter
## L'objet suivant est masqué depuis 'package:graphics':
##
## layout
library(RColorBrewer)
library(htmlwidgets)
## Warning: le package 'htmlwidgets' a été compilé avec la version R 4.4.2
library(readr)
# ==========================
# CHARGEMENT DES DONNÉES
# ==========================
cat("\n=== CHARGEMENT DES DONNÉES ===\n")
##
## === CHARGEMENT DES DONNÉES ===
data_path <- "C:/Users/digor/OneDrive/Documents/Projet_SCI1402_analyse_GTD/data/processed/gtd_clean.csv"
# Vérification du fichier
if (file.exists(data_path)) {
gtd_data <- read_csv(data_path, show_col_types = FALSE)
cat("Données chargées avec succès !\n")
} else {
stop("ERREUR : Le fichier spécifié est introuvable. Vérifiez le chemin !")
}
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Données chargées avec succès !
# ==========================
# PRÉPARATION DES DONNÉES
# ==========================
cat("\n=== PRÉPARATION DES DONNÉES ===\n")
##
## === PRÉPARATION DES DONNÉES ===
# Préparation des données pour les types d'attaques
attack_data <- gtd_data %>%
count(attacktype1_txt) %>%
arrange(desc(n)) %>%
mutate(attacktype1_txt = ifelse(row_number() > 5, "Other", attacktype1_txt)) %>%
group_by(attacktype1_txt) %>%
summarise(n = sum(n))
# Préparation des données pour les types d'armes
weapon_data <- gtd_data %>%
count(weaptype1_txt) %>%
arrange(desc(n)) %>%
mutate(weaptype1_txt = ifelse(row_number() > 5, "Other", weaptype1_txt)) %>%
group_by(weaptype1_txt) %>%
summarise(n = sum(n))
# ==========================
# CRÉATION DES CAMEMBERTS INTERACTIFS
# ==========================
# Camembert pour les types d'attaques
attack_pie <- plot_ly(
attack_data,
labels = ~attacktype1_txt,
values = ~n,
type = 'pie',
textinfo = 'label+percent',
hoverinfo = 'label+value+percent',
marker = list(colors = RColorBrewer::brewer.pal(8, "Set2"))
) %>%
layout(
title = list(text = "Interactive Pie Chart - Terrorist Attacks by Type"),
showlegend = TRUE
)
# Camembert pour les types d'armes
weapon_pie <- plot_ly(
weapon_data,
labels = ~weaptype1_txt,
values = ~n,
type = 'pie',
textinfo = 'label+percent',
hoverinfo = 'label+value+percent',
marker = list(colors = RColorBrewer::brewer.pal(8, "Set3"))
) %>%
layout(
title = list(text = "Interactive Pie Chart - Terrorist Weapons by Type"),
showlegend = TRUE
)
# ==========================
# AFFICHAGE ET SAUVEGARDE DES GRAPHIQUES
# ==========================
cat("\n=== AFFICHAGE DES GRAPHIQUES ===\n")
##
## === AFFICHAGE DES GRAPHIQUES ===
# Forcer l'affichage dans un navigateur
options(viewer = NULL)
# Affichage
attack_pie
weapon_pie
# Sauvegarder les graphiques en HTML
saveWidget(attack_pie, "attack_pie.html", selfcontained = TRUE)
saveWidget(weapon_pie, "weapon_pie.html", selfcontained = TRUE)
# Confirmation
cat("Les graphiques interactifs ont été générés avec succès et sauvegardés sous 'attack_pie.html' et 'weapon_pie.html'.\n")
## Les graphiques interactifs ont été générés avec succès et sauvegardés sous 'attack_pie.html' et 'weapon_pie.html'.